/**
 * 百度热搜爬虫
 * 
 * 一个基于Node.js的百度热搜爬虫，支持定时爬取百度热搜榜并保存历史数据。
 * 提供Web界面和命令行两种操作方式，便于管理和查看热搜数据。
 * 
 * 功能特点：
 * - 定时爬取百度热搜榜（默认每3分钟一次）
 * - 支持手动触发爬取操作
 * - 支持通过Web界面或命令行操作
 * - 保存和管理历史热搜数据
 * - 数据对比功能，查看热搜变化趋势
 */

const CrawlerServer = require('./src/server');
const CrawlerCLI = require('./src/cli');
const path = require('path');
const fs = require('fs');

// 确保data目录存在
const dataDir = path.join(__dirname, 'data');
if (!fs.existsSync(dataDir)) {
  fs.mkdirSync(dataDir, { recursive: true });
}

// 解析命令行参数
const args = process.argv.slice(2);
const mode = args[0] || 'web'; // 默认使用Web界面

// 根据不同的模式启动应用
switch (mode.toLowerCase()) {
  case 'cli':
    // 命令行模式
    console.log('正在启动命令行模式...');
    const cli = new CrawlerCLI();
    cli.start();
    break;
    
  case 'web':
  default:
    // Web服务器模式
    console.log('正在启动Web服务器模式...');
    const port = parseInt(args[1]) || 3000;
    const server = new CrawlerServer(port);
    server.start();

    // 监听进程退出信号
    const shutdownHandler = () => {
      console.log('\n正在关闭服务器...');
      server.stop();
      process.exit(0);
    };

    process.on('SIGINT', shutdownHandler);
    process.on('SIGTERM', shutdownHandler);
    break;
} 